package cho114366.basic;

public class J12_AccessModifier {

		//멤버변수
		String defaultName;
		private String privateName;
		protected String protecedName;
		public String publicName;
		//메서드
		String defaultHello(){return "Hello!!";}
		private String privateHello(){return "Hello!!";}
		protected String protecedHello(){return "Hello!!";}
		public String publicHello(){return "Hello!!";}
		
	public static void main(String[] args) {
		// 접근 지정자: access modifier
		// 객체지향 3가지 특성 중 캡슐화와 관련
		// defalt,private, protected, public
		// default로 선언된 클래스에 대한 객체 선언
		// 같은 패키지내에 J12_Accessmodifier 와
		// J12_DefaultClass이 존재하므로 접근가능
		J12_DefaultClass defaultClass = new J12_DefaultClass();
		defaultClass.name = "자바7";
		defaultClass.sayHello();
		// private로 선언된 멤버변수/메서드 접근(중요!)
		// private로 선언된 멤버변수와 메서드는
		// 멤버변수와 메서드를 선언한 클래스 내에서만
		// 접근가능하고 외부 클래스에서는 접근불가
		J12_PrivateAccessor privateAccessor = new J12_PrivateAccessor();
		// privateAccessor.name="자바7";
		// privateAccessor.sayHello();
		// protect로 선언된 멤버변수/메서드 접근(중요!)
		J12_ProtectedAccessor protectedAccessor = new J12_ProtectedAccessor();
		protectedAccessor.name = "자바7";
		protectedAccessor.sayHello();
		J12_PublicAccessor publicAccessor = new J12_PublicAccessor();
		publicAccessor.name = "자바7";
		publicAccessor.sayHello();
	}// main

}// class

// 접근 지정자가 default로 선언된 클래스
class J12_DefaultClass {
	// 접근 지정자가 default로 선언된 멤버변수
	String name;

	// 접근 지정자가 default로 선언된 메소드
	String sayHello() {
		return "hello!!";
	}
}

// 접근 지정자가 default로 선언된 클래스
class J12_PrivateAccessor {
	// 접근 지정자가 private로 선언된 메서드
	String name;

	// 접근 지정자가 Private로 선언된 메소드
	private String sayHello() {
		// name="자바8";
		return "hello!!";

	}
}

class J12_ProtectedAccessor {
	// 접근지정자가 Protected로 선언된 멤버변수
	String name;

	// 접근지정자가 Protected로 선언된 메서드
	protected String sayHello() {
		return "hello!!";

	}
}

// 접근지정자가 Public로 선언된 클래스
class J12_PublicAccessor {
	// 접근지정자가 Public로 선언된 멤버변수
	String name;

	// 접근지정자가 Protected로 선언된 메서드
	public String sayHello() {
		return "hello!!";

	}
}
